// PROGRAMA : SCRP142A
// SISTEMA : SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA
// IDENTIFICACAO CRIMINAL
// BIBLIOTECA : SISP
// CLIENTE : GEJUSPC - GERENCIA DE ESTADO DA JUSTICA, SEGURANCA
// PUBLICA E CIDADANIA / INSTITUTO DE IDENT.
// OBJETIVO : RELATORIO DAS FICHAS DE INDICE CRMINAL
// PROGRAMADOR: JOSE ANTONIO COELHO
// DATA : 11 DE SETEMBRO DE 1997
// ALTERACAO : 14/06/1999 POR SOLON MIRANDA
// ATUALIZACAO: PESQUISA PELOS CAMPOS JA FONETIZADOS: NOME COMPLETO,
// : NOME DA MAE, NOME DO PAI E ALCUNHAS(4).
// RESPONSAVEL: CARLOS HENRIQUE DATA: 20/11/1998.

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrm1110;
import br.com.vti.sisp_sicrim.antigo.model.Estla001;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

//import br.com.vti.sisp.util.session.Sisgsisp;

/**
 * Classe : Scrp142a OBJETIVO : RELATORIO DAS FICHAS DE INDICE CRMINAL *
 * 
 * @author Incode - Data: jun/2014
 * 
 */

@Resource
@Path("/antigo/scrp142a")
public class Scrp142a {
	// Views utilizadas
	SicCadastro criminalView = new SicCadastro();
	SicSenha senhaView = new SicSenha();
	// Telas/relatorios utilizados
	Scrm1110 scrm1110;
	// Includes utilizados
	Estla001 estla001 = new Estla001();
	// Areas globais / session
	Scrg001 scrg001; // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Scrp142a scrp142aAnterior;
	String faseproc = "0";
	private int jDataIni = 0;
	private int jDataFim = 0; // 1 #REG_GERAL (N13)
	// 1 #NOME-COMPLETO (A60)
	// 1 criminalView.wMAE (A60)

	private String jNomeCompletoPhon = "";
	private String jMaePhon = "";
	private String jPaiPhon = "";
	private String[] jAlcunhaPhon = new String[5];
	private String jDataNasc = "0"; // 1 #PAI (A60)

	private String jMaeLimpa = ""; // 1 #ALCUNHA (A30/4)
	// 1 #COD-MUN-NASCIMENTO (N04)
	// 1 #UF-NASCIMENTO (A02)

	// 1 scrm1110.getJocorrencia() (N03)
	// 1 scrm1110.getJobservacoes() (A77/1:4)

	private int jMatricula = 0;
	private String jNomeDigitador = "";
	private int jDataDig = 0;
	private int jHorario = 0;
	private long jFicha1 = 0;
	private long jFicha2 = 0;
	// private String chave = "C"; // 1 #CV-NOME (C)
	// 1 #CV-MAE (C)
	// 1 #VAR (C) INIT <(AD=IP)>

	private String jMensagem = ""; // 1 #ALARM (N02)

	private int jI1 = 0;
	private int datR = 0;

	private int i = 0;
	private int y = 0;
	private int var = 0;
	private String mod = "";
	private int vlt = 0;
	private String[] tabm = { "", "   ", "VEI", "CON", "MUL", "   ", "IPV", "ROU", "   ", "   ", "   ", "   ", "   ", "IDC", "ICR", "FUN", "   ", "   " };
	private String mensagemInicial = "";

	private Scrm1110 preMapas() {
		sessao.getScrg001().setWVltw(9);
		sessao.getScrg001().setWProgramaw(this.getClass().getSimpleName().toUpperCase());
		sessao.getScrg001().setWFuncaow("CONSULTA");

		scrm1110 = new Scrm1110(true, sessao);
		scrm1110.setDataCorrente(UtilBean.obtemDataDia());
		scrm1110.setChave("C");

		return scrm1110;
	}

	public Scrp142a(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrm1110 scrm1110) {
		try {
			main(scrm1110);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroScrcerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrm1110 pscrm1110) throws Exception {
		if (pscrm1110 == null) {
			primeiraVez = true;
			// scrm1110 = new Scrm1110 (primeiraVez);
			scrm1110 = preMapas();
			scrm1110.setNavegar("../scrp142a/executar");
			scrm1110.setMensagem(mensagemInicial);
			result.include("scrm1110", scrm1110);
			sessao.setAtributo("SCRP142A", this);
			scrm1110.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pscrm1110);
		}

		if (pscrm1110 != null) {
			scrm1110.receberTela(false, result);
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna))
		// FETCH 'SCRP1400'
		// PROGRAMA COM PESQUISA FONETICA
		{
			Scrp140a scrp140a = new Scrp140a(result, sessao);
			scrp140a.executar(null, null, null, null);
			return;
		}

		if (scrm1110.getJmae().trim().equals("************")) {
			jMaeLimpa = "";
		} else {
			jMaeLimpa = scrm1110.getJmae();
		}

		if (scrm1110.getJregGeral() == 0 && scrm1110.getJnomecompleto().trim().equals("") && scrm1110.getJmae().trim().equals("") && scrm1110.getJpai().trim().equals("") && (!(!scrm1110.alcunhaVazio()))) {
			scrm1110.enviarMensagem(null, "NENHUM CAMPO FOI INFORMADO - P/ RETORNAR TECLE PF3");
			result.include("scrm1110", scrm1110);
			sessao.setAtributo("SCRP142A", this);
			scrm1110.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}

		if (scrm1110.getJregGeral() != 0) {
			pesquisaRegGeral(pscrm1110);
		} else {
			fonetizaCampos();
			pesquisaFonetica();
		}

		sessao.setAtributo("SCRP142A", this);
		result.include("scrm1110", scrm1110);
		if (!result.used()) {
			scrm1110.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
		return;
	}

	private void pesquisaRegGeral(Scrm1110 pscrm1110) throws Exception {
		// Par�grafo: fd1()
		if (criminalView.pesquisaRegEstadualGeralStatusRegDifer(scrm1110.getJregGeral(), 5)) {

			if (criminalView.getPossuiMandatoAberto().trim().toUpperCase().equals("S")) {
				scrm1110.setJpmandp("SIM");
			} else {
				scrm1110.setJpmandp("NAO");
			}

			scrm1110.setJregGeral(criminalView.getRegEstadualGeral());
			scrm1110.setJnomecompleto(criminalView.getNomeCompleto());
			scrm1110.setJmae(criminalView.getNomeMae());
			jDataNasc = String.valueOf(criminalView.getDataNasc());
			jDataNasc = String.valueOf(criminalView.getDataNasc());
			scrm1110.setJdiaNasct(UtilBean.subStr(jDataNasc, 6, 2));
			scrm1110.setJmesNasct(UtilBean.subStr(jDataNasc, 4, 2));
			scrm1110.setJanoNasct(UtilBean.subStr(jDataNasc, 0, 4));
			scrm1110.setJpai(criminalView.getNomePai());
			scrm1110.setJalcunha(criminalView.getApelidoAlcunhas());
			scrm1110.setJnatural(criminalView.getNaturalidade());
			scrm1110.setJcodmunnascimento(criminalView.getCodigoMunicipioNasc());
			scrm1110.setJufnascimento(criminalView.getUfNaturalidade());
			scrm1110.setJocorrencia(1);
			scrm1110.setJobservacoes(criminalView.getObservacao());
			jDataDig = criminalView.getDataDocAtu();
			jMatricula = criminalView.getMatriculaFuncAtu();
			jHorario = criminalView.getHoraAtu();
			scrm1110.setJcpf(criminalView.getCpf());

			// ATUALIZA SIC-ESTATISTICAS NO CRIMINAL

			// MOVE
			estla001.qde = 01;
			// MOVE
			estla001.cpo = 03;

			// CONSULTA

			// MOVE
			sessao.getSisgsisp().setVlt(14);
			sessao.getSisgsisp().setVar(14);
			// MOVE
			mod = tabm[14];
			// MOVE
			estla001.esttip = 98;
			// Estna001 estna001 = new Estna001 (result, sessao);
			funcoes.estna001(estla001.cpo, estla001.esttip, estla001.qde, var, sessao.getScrg001().getWMatriculaw());
			// MOVE
			jDataIni = jDataDig;
			// Par�grafo: fd2()
			senhaView.consultaMatricula(jMatricula);
			jNomeDigitador = senhaView.getNome();
			senhaView.fecha();
			criminalView.wObservacoez = criminalView.getObservacao();

			result.include("scrm1110", scrm1110);
			sessao.setAtributo("SCRP142A", this);
			if (!result.used()) {
				scrm1110.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
			}
			return;
		}
		if (criminalView.registrosProcessados() == 0) {
			erroPesquisa();
		}
		if (criminalView.fimDados()) {
			Scrp142a scrp142a = new Scrp142a(result, sessao);
			scrp142a.executar(null);
		}
		criminalView.fecha();
	}

	private void pesquisaFonetica() throws Exception {
		// Par�grafo: fd3()
		if (criminalView.pesquisaNomeCompletoPhonNomeMaePhonNomePaiPhonApelidoAlcunhasPhonStatusRegDifer(jNomeCompletoPhon, jMaePhon, jPaiPhon, jAlcunhaPhon[1], jAlcunhaPhon[2], jAlcunhaPhon[3], jAlcunhaPhon[4], 5)) {

			scrm1110.setJregGeral(criminalView.getRegEstadualGeral());
			scrm1110.setJnomecompleto(criminalView.getNomeCompleto());
			scrm1110.setJmae(criminalView.getNomeMae());
			jDataNasc = String.valueOf(criminalView.getDataNasc());
			scrm1110.setJdiaNasct(UtilBean.subStr(jDataNasc, 6, 2));
			scrm1110.setJmesNasct(UtilBean.subStr(jDataNasc, 4, 2));
			scrm1110.setJanoNasct(UtilBean.subStr(jDataNasc, 0, 4));
			scrm1110.setJpai(criminalView.getNomePai());
			scrm1110.setJalcunha(criminalView.getApelidoAlcunhas());
			scrm1110.setJnatural(criminalView.getNaturalidade());
			scrm1110.setJcodmunnascimento(criminalView.getCodigoMunicipioNasc());
			scrm1110.setJufnascimento(criminalView.getUfNaturalidade());
			scrm1110.setJocorrencia(1);
			scrm1110.setJobservacoes(criminalView.getObservacao());
			scrm1110.setJcpf(criminalView.getCpf());
			jDataDig = criminalView.getDataDocAtu();
			jMatricula = criminalView.getMatriculaFuncAtu();
			jHorario = criminalView.getHoraAtu();
			// MOVE
			jDataIni = jDataDig;
			// Par�grafo: fd4()
			senhaView.consultaMatricula(jMatricula);
			jNomeDigitador = senhaView.getNome();
			senhaView.fecha();

			result.include("scrm1110", scrm1110);
			sessao.setAtributo("SCRP142A", this);
			if (!result.used()) {
				scrm1110.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
			}
			return;
		}
		if (criminalView.registrosProcessados() == 0) {
			erroPesquisa();
		}
		if (criminalView.fimDados()) {
			Scrp142a scrp142a = new Scrp142a(result, sessao);
			scrp142a.executar(null);
		}
		criminalView.fecha();
	}

	private void fonetizaCampos() {
		if (!scrm1110.getJnomecompleto().trim().equals("")) {
			funcoes.phonNome = scrm1110.getJnomecompleto();
			// Phonet phonet = new Phonet ();
			funcoes.phonet(funcoes.phonArea);
			// MOVE
			jNomeCompletoPhon = funcoes.phonCod;
		}

		if (!scrm1110.getJmae().trim().equals("")) {
			funcoes.phonNome = scrm1110.getJmae();
			// Phonet phonet = new Phonet ();
			funcoes.phonet(funcoes.phonArea);
			// MOVE
			jMaePhon = funcoes.phonCod;
		}

		if (!scrm1110.getJpai().trim().equals("")) {
			funcoes.phonNome = scrm1110.getJpai();
			// Phonet phonet = new Phonet ();
			funcoes.phonet(funcoes.phonArea);
			// MOVE
			jPaiPhon = funcoes.phonCod;
		}

		for (jI1 = 1; jI1 <= 4; jI1++) {
			if (!scrm1110.getJalcunha(jI1).trim().equals("")) {
				funcoes.phonNome = scrm1110.getJalcunha(jI1);
				// Phonet phonet = new Phonet ();
				funcoes.phonet(funcoes.phonArea);
				// MOVE
				jAlcunhaPhon[jI1] = funcoes.phonCod;
			}

		}
	}

	private void erroPesquisa() {
		// SETMOVE
		scrm1110.setMensagem("                   NENHUMA FICHA CRIMINAL FOI ENCONTRADA");
		sessao.setAtributo("SCRP142A", this);
		result.include("scrm1110", scrm1110);
		if (!result.used()) {
			scrm1110.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
		return;
		// Scrp142a scrp142a = new Scrp142a();
		// scrp142a.executar();
	}

	private void mostraOcorrencias(Scrm1110 pscrm1110) throws Exception {
		int ind = 0;

		criminalView.wI = 5;
		for (ind = 2; ind <= 40; ind++) {
			scrm1110.setJocorrencia(ind);
			if (scrm1110.getJocorrencia() == 2) {
				criminalView.wJ = scrm1110.getJocorrencia() + 4;
				criminalView.wL = scrm1110.getJocorrencia() + 5;
				criminalView.wM = scrm1110.getJocorrencia() + 6;
			} else {
				criminalView.wI = criminalView.wM + 1;
				criminalView.wJ = criminalView.wM + 2;
				criminalView.wL = criminalView.wM + 3;
				criminalView.wM = criminalView.wM + 4;
			}
			scrm1110.setJobservacoes(1, criminalView.wObservacoez[criminalView.wI]);
			scrm1110.setJobservacoes(2, criminalView.wObservacoez[criminalView.wJ]);
			scrm1110.setJobservacoes(3, criminalView.wObservacoez[criminalView.wL]);
			scrm1110.setJobservacoes(4, criminalView.wObservacoez[criminalView.wM]);

			if (!scrm1110.getEnviada()) // CONFIRMACAO
			{
				result.include("scrm1110", scrm1110);
				sessao.setAtributo("SCRP142A", this);
				scrm1110.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			if (pscrm1110 != null) {
				scrm1110.receberTela(false, result);
			}
			//
			if (!((UtilBean.funcao.equals(UtilBean.ctt_retorna) || UtilBean.funcao.equals(UtilBean.ctt_processa)))) {
				scrm1110.enviarMensagem(null, "TECLA INVALIDA");
				return;
			}

			if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
				Scrp120a scrp120a = new Scrp120a(result, sessao);
				scrp120a.executar(null, null, null, null, null, null, null);
			}

			if (scrm1110.getJobservacoes(1).trim().equals("")) {
				break;
			}
			criminalView.wObservacoez[criminalView.wI] = scrm1110.getJobservacoes(1);
			criminalView.wObservacoez[criminalView.wJ] = scrm1110.getJobservacoes(2);
			criminalView.wObservacoez[criminalView.wL] = scrm1110.getJobservacoes(3);
			criminalView.wObservacoez[criminalView.wM] = scrm1110.getJobservacoes(4);
			for (criminalView.wX = 4; criminalView.wX >= 2; criminalView.wX += -1) {
				if (!scrm1110.getJobservacoes(criminalView.wX).trim().equals("")) {
					criminalView.wW = criminalView.wX - 1;
					for (criminalView.wY = criminalView.wW; criminalView.wY >= 1; criminalView.wY += -1) {
						if (scrm1110.getJobservacoes(criminalView.wY).trim().equals("")) {
							scrm1110.enviarMensagem(null, "");
							return;
						}
					}
				}
			}
			if (scrm1110.getJobservacoes(1).trim().equals("")) {
				break;
			}
		}
	}

	private void restaurarEstados(Scrm1110 pscrm1110) {
		this.scrp142aAnterior = (Scrp142a) sessao.getAtributo("SCRP142A");
		if (pscrm1110 != null) {
			scrm1110 = pscrm1110;
			scrm1110.setJcontadorj(sessao.getScrg001().getWContadorw());
			scrm1110.setJempresaj(sessao.getScrg001().getWEmpresaw());
			scrm1110.setJfuncaoj(sessao.getScrg001().getWFuncaow());
			scrm1110.setJprogramaj(sessao.getScrg001().getWProgramaw());
			scrm1110.setJversaoj(sessao.getScrg001().getWVersaow());
		} else {
			scrm1110 = this.scrp142aAnterior.scrm1110;
		}
		scrm1110.setSessao(sessao);
		this.faseproc = this.scrp142aAnterior.faseproc;
		this.criminalView = this.scrp142aAnterior.criminalView;
	}

	protected void setMensagem(String mensagem) {
		mensagemInicial = mensagem;
	}
}
